python基础第二十三节

面向对象

23.1 静态方法和类方法

静态方法
在 Python 中,静态方法(Static Method)是属于类而不是属于实例的方法。它们与类的实例无关,因此在调用静态方法时,不需要传入实例(self)作为参数。静态方法是通过 @staticmethod 装饰器来声明的。
静态方法有以下特点:

  1. 不需要实例化对象:静态方法不依赖于类的实例,因此可以直接通过类名来调用,而不需要创建类的实例。
  2. 不需要 self 参数:静态方法不会自动传递实例(self)作为参数,它的参数列表中只包含定义在方法中的参数。
  3. 不能访问实例属性和实例方法:由于静态方法不与实例相关联,因此它不能直接访问实例的属性和实例方法。
    静态方法通常用于执行与类相关的任务,但不依赖于类的实例状态或属性的操作。例如,可以将静态方法用于辅助函数、工具函数或者用于创建对象的辅助方法等。
    类方法
    在 Python 中,类方法(Class Method)是一种特殊类型的方法,它属于类而不是属于实例。类方法使用 @classmethod 装饰器来声明,并且第一个参数通常被命名为 cls,表示类本身,而不是实例。
    类方法具有以下特点:
  4. 第一个参数是类本身:类方法的第一个参数通常被命名为 cls,表示类本身。通过这个参数,类方法可以访问和修改类级别的属性和方法。
  5. 可以通过类名或实例调用:类方法可以通过类名来调用,也可以通过类的实例来调用。在调用时,不需要传入实例(self)作为参数。
  6. 可以访问类级别的属性和方法:由于类方法的第一个参数是类本身,因此它可以访问和修改类级别的属性和方法。
    类方法通常用于执行与类相关的操作,而不需要依赖于类的实例。常见的用途包括创建类的实例的辅助方法,或者在类级别上管理类的状态。

23.2 property

在 Python 中,@property 是一个装饰器,它用于将方法转换为只读属性。使用 @property 装饰器可以使类的接口更加简洁,同时提供一种对属性进行控制和校验的方式。
使用@property装饰过后的方法会被当做属性处理, 是不可调用的.
同时@property 装饰器还可以与其他装饰器一起使用,以实现更多的功能。其中,最常用的是 @property@<property_name>.setter 装饰器的组合,用于定义属性的设置方法。
property还可以用作动态属性.

from datetime import datetime


class Date:

    @property
    def now(self):
        return datetime.now()

    def print_now(self):
        print(f"现在的时间是{self.now}")

23.3 getattrsetattr

getattrsetattr 是 Python 内置函数,用于动态地获取和设置对象的属性。它们提供了一种在运行时操作对象属性的方式.
getattr

getattr(object, name[, default])

参数说明

setattr(object, name, value)

参数说明

3.3 返回值

setattr 函数没有返回值。

23.4 isinstance和type

isinstancetype 是 Python 内置函数,用于判断对象的类型。它们在编程中常用于类型检查,帮助我们判断一个对象是否属于某个特定的类型。

isinstance(object, classinfo)

参数说明

返回值

type(object)

object: 表示要获取类型的对象。

23.5 python中一切皆对象

在 Python 中,“一切皆对象”是一种重要的编程思想。它将数据、函数、模块、类和实例统一视为对象,赋予了 Python 强大的灵活性和可扩展性。理解并熟练运用对象的概念,有助于编写出更加清晰、模块化和易于维护的 Python 代码。同时,它也为进一步深入学习 Python 的高级特性和编程范式奠定了基础。
在 Python 中,对象是内存中的数据块,每个对象都有唯一的标识符、类型和值。例如,整数、字符串、列表、字典等都是对象。我们可以通过内置函数 id() 获取对象的标识符,type() 获取对象的类型。函数和模块也是对象。我们可以像操作其他对象一样对函数和模块进行操作。函数可以赋值给变量、作为参数传递给其他函数、作为返回值返回等。类也是对象。我们可以用类创建实例,实例也是对象。类是对象的模板,实例是根据类创建的具体对象。类可以拥有属性和方法,实例可以调用类的方法和访问属性。